package integracion;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import dominio.*;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ControlEvento {

    private SqlMapClient sqlMap;

    public ControlEvento() throws IOException, SQLException {

        String resource = "configuracion/sql-map-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        this.sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

    }

    public boolean agregarEvento(Evento evento) {

        try {
            getSqlMap().insert("agregarEvento",evento);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public List<Evento> consultarEventos(){

        try{

            List eventos = sqlMap.queryForList("consultarEventos");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosEjecutivo(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosEjecutivo");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosSegundaCuota(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosSegundaCuota");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosSinPagar(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosSinPagar");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosSinCuotas(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosSinCuotas");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosInsumosSubcontratar(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosInsumosSubcontratar");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosCotizaciones(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosCotizaciones");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosFactura(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosFactura");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosRecibo(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosRecibo");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosEstadistica(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosEstadistica");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Evento> consultarEventosProveedor(){

        try{

            List eventos = sqlMap.queryForList("consultarEventosProveedor");
            return eventos;

        } catch (SQLException e){
            Logger.getLogger(ControlEvento.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public boolean eliminarEvento(Evento evento) {

        try {
            sqlMap.delete("eliminarEvento",evento);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public boolean modificarEvento(Evento evento) {

        try {
            sqlMap.update("modificarEvento",evento);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public SqlMapClient getSqlMap() {
        return sqlMap;
    }

    public void setSqlMap(SqlMapClient sqlMap) {
        this.sqlMap = sqlMap;
    }
}
